Control Flow Imperative Expressions Block Structure
نویسندگان
چکیده
This paper presents a modular and extensible style of language speciication based on meta-computations. This style uses two monads to factor the static and dynamic parts of the speci-cation, thereby staging the speciication and achieving strong binding-time separation. Because metacomputations are deened in terms of monads, they can be constructed modularly and ex-tensibly using monad transformers. A number of language constructs are speciied: expressions, control-ow, imperative features, block structure, and higher-order functions and recursive bindings. Metacomputation-style speciication lends itself to semantics-directed compilation, which we demonstrate by creating a modular compiler for a higher-order, imperative, Algol-like language.
منابع مشابه
Compilation as Metacomputation: Binding Time Separation in Modular Compilers (ex Tende D Abstract)
This paper presents a modular and extensible style of language speciication based on meta-computations. This style uses two monads to factor the static and dynamic parts of the speci-cation, thereby staging the speciication and achieving strong binding-time separation. Because metacomputations are deened in terms of monads, they can be constructed modularly and ex-tensibly using monad transform...
متن کاملSpecialization of Imperative Programs Through Analysis of Relational Expressions
An inter-procedural data flow analysis operating on control flow graphs and collecting information about program expressions is described in this paper. The following relational and other expressions are analyzed: equivalences between program expressions and constants; linear-ordering inequalities between program expressions and constants; equalities originating from some program assignments; a...
متن کاملSeparation Logic for Non-local Control Flow and Block Scope Variables
We present an approach for handling non-local control flow (goto and return statements) in the presence of allocation and deallocation of block scope variables in imperative programming languages. We define a small step operational semantics and an axiomatic semantics (in the form of a separation logic) for a small C-like language that combines these two features, and which also supports pointe...
متن کاملSteering Clear of Triples: Deriving the Control Flow Graph Directly from the Abstract Syntax Tree in C Programs
This article explores the extension of Morgenthaler's Virtual Control Flow techniqueeMor97], which derives control owwASU86] semantics directly from the Abstract Syntax Tree, from the relatively coarse granularity of syntactic C expressions to the ner granularity of basic block expressions, that is, expressions without embedded control ow. We explain why this is a better level of abstraction fo...
متن کاملImperative Program Transformation by Rewriting
We present a method of specifying standard imperative program optimisations as a rewrite system. To achieve this we have extended the idea of matching sub-terms in expressions with simple patterns to matching blocks in a control flow graph. In order to express the complex restrictions on the applicability of these rewrites we add temporal logic side conditions. The combination of these features...
متن کامل